home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr23 / rbcom345.zip / TERM-EMU.DOC < prev    next >
Text File  |  1995-01-22  |  24KB  |  544 lines

  1. RBcomm v3.45    Copyright (c) 1989-1995 Ralf Brown    All Rights Reserved
  2.  
  3. -----------------------------------------------------------------------------
  4. Terminal Emulation
  5. ------------------
  6.  
  7. RBcomm supports three terminal emulations.  ANSI provides standard ANSI
  8. escape sequences plus most VT102 and many VT200 escape sequences.  BBS is
  9. identical to ANSI except that clearing the screen with Esc-[-J or Esc-[-2-J
  10. also homes the cursor, character set switching is disabled, and two of
  11. RBcomm's private commands are replaced by the AVATAR level 0 command set.
  12. Finally, VT52 replaces many of the Esc-letter sequences in ANSI with the
  13. actions a VT52 or H19 would perform.  In addition, in all of these modes,
  14. RBcomm has its own, much more compact command set (which may optionally
  15. be disabled to permit display of the corresponding control characters).
  16.  
  17. ------------------
  18. Control Characters
  19. ------------------
  20.  
  21. Note: Control characters marked with (RBcomm) may be displayed if the
  22.     terminal emulation is set to "BBS" and RBcomm private commands are
  23.     disabled. 
  24.  
  25. ^A    UnixWindows command character (see below for sequences)
  26. ^B    move cursor right one position (RBcomm)
  27. ^C    move cursor down a line (RBcomm)
  28. ^D    move cursor left one position, does not wrap to previous line (RBcomm)
  29. ^E    send the answerback string to the remote system (ANSI and VT52 only)
  30. ^F    special sequences (see below) (RBcomm)
  31. ^G    sound bell, or flash screen if visible bell enabled
  32. ^H    move cursor left one position, wraps to previous line
  33. ^I    move to next tab stop
  34. ^J    move cursor down a line, scrolling screen when at bottom
  35. ^K    insert a blank line
  36. ^L    clear screen and home cursor
  37. ^M    move cursor to start of line
  38. ^N    "shift out"--switch to G1 character set (VT100)
  39. ^O    "shift in"--switch to G0 character set (VT100)
  40. ^P    clear rest of line (Note: if AVATAR is in cooked mode, ^P is the
  41.     "cook" character, causing the next character to have its high three
  42.     bits cleared; two consecutive ^Ps will be needed to give the
  43.     clear-line command) (RBcomm)
  44. ^R    change to reverse video (RBcomm)
  45. ^T    change character attribute to underlined (RBcomm)
  46. ^U    clear underlined attribute and reverse video (RBcomm)
  47. ^V    start of an AVATAR command (see below)
  48. ^W    delete character at cursor position, rest of line shifts left (RBcomm)
  49. ^X    insert a blank at the cursor's position, push rest of line
  50.     right (RBcomm)
  51. ^Y    repeat the following character the number of times specified by
  52.           the second character after the ^Y
  53. ^Z    delete line cursor is on (RBcomm)
  54. ^[    escape sequence (see below)
  55. ^\    turn on insert mode (RBcomm)
  56. ^]    turn off insert mode (RBcomm)
  57. ^^    move cursor up a line (RBcomm)
  58. ^_    the following two characters (less 32) specify the new cursor
  59.     column and row.     i.e. ^_-blank-blank homes the cursor. (RBcomm)
  60.  
  61.  
  62. ----------------
  63. Escape Sequences
  64. ----------------
  65.  
  66. Esc-blank-F  turn off eight-bit control characters
  67. Esc-blank-G  turn on eight-bit control characters.  When eight-bit control
  68.          characters are enabled, many of the characters from 80h through
  69.          9Fh are equivalent to Esc-<char-40h>.
  70. Esc-(    (VT100) next character ('0', '1', '2', 'A', or 'B') sets G0 character
  71.     set
  72. Esc-)    (VT100) next character ('0', '1', '2', 'A', or 'B') sets G1 character
  73.     set
  74. Esc-#    (VT100) next character sets character size
  75.     only '8' implemented -- fill screen with 'E's for alignment display
  76. Esc-7    save cursor
  77. Esc-8    restore cursor
  78. Esc-<    set terminal emulation to ANSI
  79. Esc-=    set keypad application mode (if allowed to change NumLock by RBCONFIG)
  80. Esc->    set keypad numeric mode (if allowed to change NumLock by RBCONFIG)
  81. Esc-@    turn on insert mode
  82. Esc-A    move cursor up
  83. Esc-B    move cursor down
  84. Esc-C    move cursor right
  85. Esc-D    (ANSI) "index"--move cursor down, scroll if at bottom
  86.     (VT52) move cursor left
  87. Esc-E    (ANSI) move to start of next line, scroll if at bottom
  88.     (VT52) clear screen
  89. Esc-F    (ANSI) not implemented
  90.     (VT52) select graphics character set
  91. Esc-G    (ANSI) not implemented
  92.     (VT52) select text character set
  93. Esc-H    (ANSI) set horizontal tab at current position
  94.     (VT52) home cursor
  95. Esc-I    (ANSI) horizontal tab
  96.     (VT52) reverse linefeed, scrolls down if already on top line
  97. Esc-J    (ANSI) not implemented
  98.     (VT52) clear to end of screen
  99. Esc-K    (ANSI) not implemented
  100.     (VT52) clear to end of line
  101. Esc-L    (ANSI) not implemented
  102.     (VT52) insert a new line at cursor
  103. Esc-M    (ANSI) "reverse index"--cursor up, reverse scroll if at top
  104.     (VT52) delete cursor line
  105. Esc-N    (ANSI) not implemented
  106.     (VT52) delete char at cursor, rest of line shifts left
  107. Esc-O    (ANSI) not implemented
  108.     (VT52) turn off insert mode
  109. Esc-Y    move cursor, next two characters are row + 32, column + 32
  110. Esc-Z    request identification
  111.     (ANSI) RBcomm returns the string "rbcommN.NNx" where N.NN is the
  112.            version number and "x" is a single byte identifying implemented
  113.            capabilities
  114.            bit 0: multiple screens available if set
  115.            bit 1: file transfer implemented (always set)
  116.            bit 6: always set (makes character printable)
  117.            bit 7: always clear
  118.            remaining bits reserved (zero)
  119.     (VT52) RBcomm returns the string Esc-/-Z, indicating a VT100 emulating
  120.            a VT52.
  121. Esc-[    ANSI sequence, see below
  122. Esc-]    Operating System Command.  The following characters through an Esc-\
  123.     sequence (maximum 80 characters) are skipped, as this command has
  124.     no effect.
  125. Esc-^    ANSI Privacy Message.  The following characters through an Esc-\
  126.     sequence (maximum 80 characters) are accumulated.  If running under
  127.     DESQview, the first 40 are displayed in the notification window;
  128.     otherwise, the accumulated characters are discarded.
  129. Esc-_    Application Program Command.  The following characters through an
  130.     Esc-\ sequence (maximum 80 characters) are skipped, as this command
  131.     has no effect.
  132. Esc-c    reset to initial state
  133. Esc-j    save cursor position       (Heath H19)
  134. Esc-k    restore cursor position       (Heath H19)
  135. Esc-l    erase line           (Heath H19)
  136. Esc-p    turn on bold characters
  137. Esc-q    turn off bold characters
  138. Esc-v    turn on line wrap       (Heath H19)
  139. Esc-w    turn off line wrap       (Heath H19)
  140. Esc-z    reset terminal emulation   (Heath H19)
  141.  
  142.  
  143. --------------
  144. ANSI Sequences
  145. --------------
  146.  
  147. All of the sequences listed here consist of Esc-[ followed by zero or more
  148. numbers separated by semicolons followed by the command letter.     Therefore,
  149. only the command letter will be listed.     X1, X2, etc refer to the specified
  150. numeric argument, and usually are followed by a default value in
  151. parentheses.  All cursor positioning commands number rows and columns
  152. starting at 1.
  153.  
  154. blank    extended ANSI sequence (see below)
  155. $    extended ANSI sequence (see below)
  156. @    insert X1 (1) blanks, shifting rest of line to the right
  157. A    move cursor up X1 (1) lines
  158. B    move cursor down X1 (1) lines
  159. C    move cursor right X1 (1) positions
  160. D    move cursor left X1 (1) positions
  161. E    move cursor down X1 (1) lines, scroll if at bottom
  162. F    move cursor up X1 (1) lines, scroll if at top
  163. G    move cursor to position X1 (1) in current line
  164. H    move cursor to row X1 (1), column X2 (1)
  165. I    move to X1st (1) following horizontal tab position
  166. J    case X1 (*):  0     clear from cursor to end of screen
  167.               1     clear from start of screen to cursor
  168.               2     clear screen
  169.         * default is 0 for ANSI and VT52, 2 for ANSI-BBS
  170. K    case X1 (0):  0     clear from cursor to end of line
  171.               1     clear from start of line to cursor
  172.               2     clear line
  173. L    insert X1 (1) lines at cursor
  174. M    delete X1 (1) lines at cursor
  175.     or play following music string, if emulation is ANSI-BBS and Music
  176.       is enabled.  The music string has the same format as for the
  177.       PLAY command, and is terminated with a ^N character.
  178. P    delete X1 (1) characters at cursor, rest of line shifts left
  179. S    scroll up X1 (1) lines
  180. T    scroll down X1 (1) lines
  181. U    switch to screen X1 (1) screens later, wrapping back to screen 0
  182.     if X1 preceded by an equal sign, switch to specified screen
  183. V    switch to screen X1 (1) screens prior, wrapping to last screen
  184. X    erase X1 (1) characters starting at cursor position, cursor stays put
  185. Z    move cursor to X1st (1) preceding horizontal tab position
  186. `    move cursor to position X1 (1) in current line
  187. a    move cursor X1 (0) positions from current position in line
  188. c    device attribute report
  189.       responds by sending Esc-[-?-6-c (VT102)
  190. d    move cursor to line X1
  191. e    move cursor X1 (0) lines from current line
  192. f    move cursor to row X1 (1), column X2 (1)
  193. g    case X1 (0):  0      clear horizontal tab at current position
  194.               3      clear all horizontal tab stops
  195.               '>' clear all horizontal tab stops, then set tabs every
  196.               N positions (i.e.  Esc-[->-5-g sets tabs every five
  197.               columns)
  198. h    select mode
  199.     case X1 (0):  ?2  set emulation to ANSI
  200.               ?3  select 132-column mode (if enabled by RBCONFIG)
  201.                4  turn on insert mode
  202.               ?5  turn on inverted video
  203.               ?6  turn on scrolling-region-relative cursor positioning
  204.               (origin mode)
  205.               ?7  turn on wrap mode
  206.               12  turn on local echo
  207.               20  turn on newline mode (send CRLF when CR pressed)
  208.              ?25  turn cursor on (make visible)
  209. i    media copy
  210.     case X1 (1):   1  dump entire screen to printer
  211.               ?1  dump screen line containing cursor to printer
  212.                4  exit printer controller mode [not yet implemented]
  213.               ?4  stop echoing to printer [not yet implemented]
  214.                5  enter printer controller mode [not yet implemented]
  215.               ?5  start echoing to printer [not yet implemented]
  216. l    reset mode
  217.     case X1 (0):  ?2  set emulation to VT52
  218.               ?3  select 80-column mode
  219.                4  turn off insert mode
  220.               ?5  turn off inverted video
  221.               ?6  set top of scrolling region to topmost line, bottom
  222.               to bottom of screen, and turn off relative cursor
  223.               positioning (absolute cursor positioning)
  224.               ?7  turn off wrap mode
  225.               12  turn off local echo
  226.               20  turn off newline mode (send only CR when CR pressed)
  227.              ?25  turn off cursor (make invisible)
  228.               Note: may not work on all systems or in all video
  229.               modes
  230. m    select graphic rendition
  231.     for each Xn in order,
  232.               0     reset attributes to white on black, turn off reverse
  233.              video
  234.               1     set bold
  235.               4     set underlined
  236.               5     set blinking
  237.               7     set reverse video
  238.               8     set invisible (black on black)
  239.              21     turn off bold
  240.              22     turn off bold
  241.              24     turn off underlined
  242.              25     turn off blinking
  243.              27     turn off reverse video
  244.              30     set foreground color
  245.               -
  246.                37
  247.              40     set background color
  248.               -
  249.                47
  250.     Note: Esc-[-m is equivalent to Esc-[-0-m
  251. n    device status report
  252.     case X1 (0):  5     report terminal status
  253.              always sends Esc-[-0-n (terminal OK) to remote
  254.               6     report cursor position
  255.              sends string Esc-[-row-;-col-R to remote system
  256.              15     printer status
  257.              sends Esc-[-?-1-3-n (no printer) if no printer defined
  258.                    Esc-[-?-1-0-n if printer is ready
  259.                    Esc-[-?-1-1-n if printer is not ready
  260.                  [currently always sends ?13n]
  261.              25     report User Definable Key status
  262.              always sends Esc-[-?-21-n (UDK's locked)
  263.              26     report keyboard dialect
  264.              always sends Esc-[-?-27-;-1-n (US ASCII)
  265. r    set scrolling region to rows X1 (1) through X2 (lines-on-screen)
  266. s    save cursor (may not be nested)
  267. u    restore cursor
  268. x    request terminal parameters (VT100)
  269.     case X1 (0):  0     sends back string indicating bits, parity, speed
  270.               1     sends back string indicating bits, parity, speed
  271.     the string sent is
  272.        Esc-[-<id>-;-<parity>-;-<bits>-;-<tspd>-;-<rspd>-;1;0x
  273.     where <id> is 2 if X1 was 0 and 3 if X1 was 1
  274.           <parity> is 1 for none, 2 for space, 3 for mark, 4 for odd,
  275.               and 5 for even
  276.           <bits> is 1 for 8, 2 for 7, 3 for 6, and 4 for 5 data bits
  277.           <tspd> and <rspd> are the transmit and receive speeds:
  278.              16 -> 110 bps
  279.              32 -> 150 bps
  280.              48 -> 300 bps
  281.              56 -> 600 bps
  282.              64 -> 1200 bps
  283.              88 -> 2400 bps
  284.             104 -> 4800 bps
  285.             112 -> 9600 bps
  286.             120 -> 19200 bps
  287.             128 -> 38400 bps
  288.             136 -> 57600 bps
  289.             144 -> 115200 bps
  290. z    reset terminal emulation (Heath H19)
  291.  
  292.  
  293. -----------------------
  294. Extended ANSI sequences
  295. -----------------------
  296.  
  297. If the command character for an ANSI sequence is a blank, the NEXT character
  298. specifies the actual operation.
  299.  
  300. @    scroll left X1 (1) columns
  301. A    scroll right X1 (1) columns
  302.  
  303. If the command character for an ANSI sequence is a dollar sign, the NEXT
  304. character specifies the actual operation.  These are DEC VT2xx extensions.
  305.  
  306. p      ANSI mode control state request
  307.       always returns CSI X1 ; 0 $ y       (unknown mode)
  308. u      terminal state request
  309.       always returns DCS 1 $ ST       (no state information returned)
  310.  
  311.  
  312. ---------------------
  313. UnixWindows sequences
  314. ---------------------
  315.  
  316. When RBcomm receives a ^A, the following character specifies the actual
  317. command.  If UnixWindows is enabled, a ^A introduces a UnixWindows command
  318. at ANY time, even in the middle of another command; when disabled, ^A is a
  319. normal command sequence introducer.  This distinction is necessary because
  320. both AVATAR and RBcomm private commands may include ^A within the sequence.
  321. The UnixWindows commands are encoded as follows:
  322.  
  323. +---+---+---+---+---+---+---+---+
  324. | 0 |dir|  function | parameter |
  325. +---+---+---+---+---+---+---+---+
  326.  
  327. where "dir" is 0 for commands being sent to RBcomm from the remote system
  328. and 1 for commands sent by RBcomm.  RBcomm currently supports the following
  329. functions:  [Note: this is not yet enough to successfully run UnixWin]
  330.  
  331. 0  NEWW      [not yet implemented]
  332.  
  333. 1  KILLW  [not yet implemented]
  334.  
  335. 2  SELIN  The parameter of this function specifies which "window" will
  336.       display characters received from the serial port.  UW windows
  337.       are numbered from 1 to 7 and mapped to RBcomm screens 0 through
  338.       6.  UW window 0 does not exist; if function 2 is invoked with
  339.       parameter 0, the command is ignored.
  340.  
  341. 3  SELOUT This command is never sent by the remote host, and is thus
  342.       ignored
  343.  
  344. 4  WINOPT [not yet implemented]
  345.  
  346. 5  META      If the parameter is 0, set the high bit of the next received
  347.       character before processing it.  If the next character is a ^A
  348.       UnixWindows command character, this command will apply to the
  349.       next non-UW character (or the control character produced by
  350.       function 6 below)
  351.       If the parameter is one of the following, act as if the specified
  352.       character had been received; otherwise, ignore the command.
  353.       parameter 1 = char 129
  354.       parameter 2 = char 145
  355.       parameter 3 = char 147
  356.  
  357. 6  CTRL      if the parameter is one of the following, act as if the specified
  358.       control character had been received; otherwise, ignore the command.
  359.       If function 5 was received immediately prior to this command, the
  360.       high bit will be set.
  361.       1   ^A
  362.       2   ^Q
  363.       3   ^S
  364.  
  365. 7  MAINT  the parameter specifies one of a number of maintenance functions:
  366.       0   ENTRY  sent by UW server on startup.  RBcomm enables the
  367.              UnixWindows protocol on receiving this command.
  368.       2   ASKPCL remote system requests the start of protocol negotiation.
  369.              RBcomm responds with CANPCL 1 (the most basic protocol).
  370.       3   CANPCL remote system specifies a protocol it is capable of
  371.              supporting in the following byte (1Fh is added to the
  372.              protocol number to make it printable).  If protocol 1
  373.              specified, RBcomm responds with SETPCL 1, otherwise it
  374.              responds with CANPCL 1.
  375.       4   SETPCL remote system specifies a protocol which both ends are
  376.              to use.  The protocol is sent in the next byte, with 1Fh
  377.              added to make it printable.  As RBcomm only supports
  378.              protocol 1, this function is currently ignored.
  379.       7   EXIT   sent by UW server on shutdown.  RBcomm disables the
  380.              UnixWindows protocol on receiving this command.
  381.  
  382.  
  383. ------------------------
  384. Special RBcomm sequences
  385. ------------------------
  386.  
  387. When RBcomm receives a ^F, the following character specifies the actual
  388. command.
  389.  
  390. ^x    display the IBM PC screen character corresponding to the control
  391.     character
  392. 0    turn off visual bell, ^G will beep
  393. 1    turn on visual bell, ^G will flash the screen, but internally
  394.     generated beeps still sound
  395. 2    flash the screen
  396. 3    beep even if visual bell turned on
  397. 4    fill area.  Identical to AVATAR ^V^M (see below) but does not cancel
  398.     insert mode.
  399. 5    clear from cursor to end of screen
  400. 6    repeat pattern.     Identical to AVATAR ^V^Y (see below)
  401. :    disable the UnixWindows protocol
  402. ;    enable the UnixWindows protocol
  403. <    set terminal emulation to VT102/ANSI.  Does not affect any other
  404.       settings
  405. =    set terminal emulation to ANSI-BBS.  Does not affect any other
  406.       settings.
  407. >    set terminal emulation to VT52.     Does not affect any other settings.
  408. ?    query terminal emulation type.    Sends back <127><type> where type is
  409.       'A' for VT102/ANSI, 'B' for ANSI-BBS, or 'V' for VT52.  The type
  410.       is converted to lower case if the UnixWindows protocol is enabled.
  411. @    send identification (see Esc-Z)
  412. A    [obsolete--this command no longer does anything]
  413. B    if next character is '0' through '8' switch to the specified
  414.     screen, provided that memory was allocated for it at startup.
  415.     Sends a response of 127-<digit>-<status> to the remote system,
  416.     where the digit is the screen number from the ^FB command, and
  417.     status is 'Y' if the screen exists or 'N' if it doesn't.  It is
  418.     the remote system's responsibility to redraw the screen if the
  419.     response is 'N'.
  420. C    if next character is '0' through '8' and the specified screen was
  421.     allocated at startup, clear that screen to blanks.
  422.  
  423. ------------------------
  424. AVATAR command sequences
  425. ------------------------
  426.  
  427. ^V^A    set screen attribute to low seven bits of following character
  428. ^V^B    set blink
  429. ^V^C    move cursor up a line
  430. ^V^D    move cursor down a line
  431. ^V^E    move cursor left one space
  432. ^V^F    move cursor right one space
  433. ^V^G    clear from cursor to end of line
  434. ^V^H<r><c>  move cursor to row <r> and column <c>, where the upper left corner
  435.         is 1,1
  436. ^V^I    turn on insert mode until next AVATAR command (except ^Y and ^V^Y)
  437. ^V^J    scroll area up.     Next five characters specify number of lines to
  438.     scroll, top margin, left margin, bottom margin, and right margin (all
  439.     margins are based on 1,1 being the upper left corner of the screen)
  440. ^V^K    scroll area down.  Next five characters are as for ^V^J
  441. ^V^L    clear area.  Next three characters specify screen attribute for cleared
  442.     area, number of lines less one, and number of columns less one.     The
  443.     blink bit of the attribute is ignored, and the current display attribute
  444.     is set to the attribute of the cleared area.  If the requested area
  445.     extends beyond the current window limits, it will be truncated to fit.
  446. ^V^M    fill area.  Next four characters specify screen attribute for filled
  447.     area, character to fill with, number of lines less one, and number of
  448.     columns less one.  The current display attribute is set to the filled
  449.     attribute with blinking turned off.  If the requested area extends
  450.     beyond the current window limits, it will be truncated to fit.
  451. ^V^N    delete character at cursor position, shifting the remainder of the
  452.     line.
  453.  
  454. The following commands (except for ^V^Y) are Level 1 extensions.  They
  455. are not fully implemented, and are not expected to be completely
  456. correct, as the official specifications have just (1/20/91) been
  457. published, and I have not had time to implement and test everything.  In
  458. cases where the official specs differ from the sketchy information I had
  459. to work with, the behavior will be incorrect.  Those commands marked
  460. [not implemented] will merely be skipped without any further processing.
  461.  
  462. ^V^O    turn clockwise mode on [not implemented]
  463. ^V^P    not used
  464. ^V^Q    query.    Next character specifies the type of query
  465.     ^Q  get driver version info.  Returns the string
  466.            "AVT0,rbcommN.NNc\r"
  467.         where N.NN is the RBcomm version and c is the capability byte
  468.         (see Esc-Z).  This identifies RBcomm as complying with the AVATAR
  469.         level 0 specification, since level 1 support is still incomplete.
  470. ^V^R    reset AVATAR [not implemented]
  471. ^V^S    make a sound.  The next three characters specify the note number,
  472.     octave, and duration in tenths of a second.  The note is computed as
  473.         (note-'A')*2 + sharp
  474.     The current implementation does not queue any tones unless RBcomm is
  475.     running under DESQview (which can queue notes).
  476. ^V^T    highlight character at cursor position.     Next character specifies new
  477.     attribute.
  478. ^V^U    highlight window.  Next two characters specify the window handle and
  479.     new attribute.
  480. ^V^V    define window.    Next six characters specify the window handle, default
  481.     attribute, top margin, left margin, bottom margin, and right margin.
  482.     The default attribute is also the initial current attribute for the
  483.     new window.  Note: window 0 can not be redefined.
  484. ^V^W    switch to window.  The next character specifies the handle of the
  485.     window to switch to.
  486. ^V^X    flush input [not implemented]
  487. ^V^Y    repeat pattern.     The following character specifies the length of the
  488.     pattern to be repeated, followed by the pattern, and finally followed
  489.     by a single character indicating the number of times to repeat the
  490.     pattern.  The pattern may contain command sequences, but is limited
  491.     to 80 characters (longer patterns are truncated to 80 characters).
  492. ^V^\    go to bed [not implemented]
  493. ^V^]    wake up [not implemented]
  494. ^V^^    start vertical output [not implemented]
  495. ^V^_    start horizontal output [not implemented]
  496. ^V!    poke char/attr to physical screen.  The next four characters specify
  497.     the character and attribute to poke, and the row and column at which
  498.     to display that character and attribute.
  499. ^V"    turn off line wrap
  500. ^V#    wrap in zigzag mode [not implemented]
  501. ^V$    turn on line wrap
  502. ^V%    reverse direction of linefeeds [not implemented]
  503. ^V&    linefeeds move in normal direction [not implemented]
  504. ^V'    set cursor type.  The next character specifies the cursor's shape:
  505.       ^A return to default (startup) cursor shape
  506.       ^B make cursor invisible (does not work on all systems in all modes)
  507.       ^C block cursor, covering entire character cell
  508.       otherwise, this command is ignored
  509. ^V(    output in forward direction [not implemented]
  510. ^V)    output in reverse direction [not implemented]
  511. ^V*    system pause.  The next character specifies the    duration in tenths of
  512.     a second.  Contrary to the official AVATAR specs, RBcomm treats zero
  513.     as 256 tenths seconds, rather than a full hour.     This is both more
  514.     consistent and more secure, as neither keyboard nor serial port
  515.     activity is possible during a system pause.
  516. ^V+    insert a line
  517. ^V,    insert a blank column at the current cursor position
  518. ^V-    delete current line
  519. ^V.    delete current column
  520. ^V/    set/reset static mode [not implemented]     The next character specifies
  521.     whether or not the cursor should be advanced after outputting a
  522.     character to the screen.
  523. ^V0    highlight from cursor to end of line.  The next character specifies
  524.     the new attribute to be applied to the rest of the line.
  525. ^V1    highlight from start of line to cursor.     The next character specifies
  526.     the new attribute to be applied to the beginning of the line.
  527. ^V:    keyboard mode.    The next character specifies the mode.    RBcomm
  528.     always returns ^V:0 (default mode), as it does not support this
  529.     command.
  530. ^V<    scroll left.  The next five characters specify the number of columns
  531.     to scroll, the top margin, left margin, bottom margin, and right
  532.     margin of the area to scroll.
  533. ^V=    set parser mode.  If the next character ANDed with 1Fh is ^R or ^C,
  534.     set the mode to raw or cooked, respectively.  In cooked mode, the
  535.     character immediately following a ^P is ANDed with 1Fh, and the result
  536.     is treated as if it had arrived from the remote system instead of the
  537.     ^P sequence.
  538. ^V>    scroll right.  The next five characters are as for ^V<
  539. ^V?    peek at physical screen.  The next two characters specify the row and
  540.     column at which to peek.  RBcomm returns the poke command (see ^V!)
  541.     needed to restore the given character position to its current state.
  542.  
  543. -----------------------------------------------------------------------------
  544.